<?php
/**
 * Klasa tworząca odpowiedź w formacie JSON
 * 
 * @author Marcin
 */
class JSONResponse {
	const TYPE_ERROR = 0;
	const TYPE_TEXTMSG = 1;
	const TYPE_DATAMSG = 2;
	
	private $type;
	private $respData;
	private $respId;
	
	/**
	 * @method __construct
	 * @param int $type Jeden z typów zdefiniowanych jako stałe
	 * @param mixed[] $respData Dane odpowiedzi
	 * @param int $respId ID zapytania na które zostanie stworzona odpowiedź
	 */
	public function __construct($type, $respData, $respId) {
		$this->type = $type;
		$this->respData = $respData;
		$this->respId = $respId;
	}
	
	/**
	 * @method __toString
	 * 
	 * @return String Odpowiedź w formacie JSON
	 */
	public function __toString() {
		$answ_array = array(
			'jsonrpc'=> '2.0',
			'id'=> $this->respId
		);
		switch($this->type) {
			case $this::TYPE_ERROR: 
				$answ_array['error'] = $this->respData;
				break;
				
			case $this::TYPE_TEXTMSG:
				$res = array();
				foreach($this->respData as $k => $v) 
					$res[$k] = $v;
				
				$answ_array['result'] = (object)$res;
				break;
				
			case $this::TYPE_DATAMSG:
				
				break;
		}
		return json_encode($answ_array, JSON_UNESCAPED_UNICODE);
	}
}
